Skip to content

プロセス

プロセスは、メッセージパッシングを通じて通信を行う能力を持っており、ネットワーク内でメッセージの受信と送信を行うことができます。さらに、プロセスは他のプロセスを新たにインスタンス化する能力も持ち、ネットワークの計算基盤を拡張します。このネットワーク内での動的なデータの伝達と相互作用の方法は「ホログラフィック状態」と呼ばれ、ネットワークの共有および永続的な状態を支えるものです。

Process-Diagram

aosでプロセスを構築する際、handlersを追加することができます。これらのハンドラは、Handlers.add関数を呼び出し、「name」、「match」関数、および「handle」関数を渡すことで追加できます。

Handler Diagram

コアモジュールには、ハンドラ関数に注入されるヘルパーライブラリが含まれており、このライブラリはaoと呼ばれます。

lua
{
    env = {
        Process = {
            Id = "5WzR7rJCuqCKEq02WUPhTjwnzllLjGu6SA7qhYpcKRs",
            Owner = "_r9LpP4FtClpsGX3TOohubyaeb0IQTZZMcxQ24tTsGo",
            Tags = {...}
        },
        Module = {
            Id = "UAUszdznoUPQvXRbrFuIIH6J0N_LnJ1h4Trej28UgrE",
            Owner = "_r9LpP4FtClpsGX3TOohubyaeb0IQTZZMcxQ24tTsGo",
            Tags = {..}
        }
    },
    id = "5WzR7rJCuqCKEq02WUPhTjwnzllLjGu6SA7qhYpcKRs",
    isTrusted = "function: 0x5468d0",
    result = "function: 0x547120",
    send = "function: 0x547618",
    spawn = "function: 0x5468b0"
}

このaoヘルパーで注目すべき主な関数は次のとおりです。

  • ao.send(Message) - メッセージをプロセスに送信します
  • ao.spawn(Module, Message) - 新しいプロセスを作成します

Ethereumで署名されたプロセスまたはモジュール

aoProcessまたはModuleにおいて、ANS-104 DataItemがEthereumのキーを使用して署名された場合、
それぞれenv.Process.Ownerまたはenv.Module.Ownerフィールドの値は、署名者のEIP-55準拠のEthereumアドレスになります。
例えば:0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359

ao.send Example

lua
ao.send({
    Target = Chatroom,
    Action = "Broadcast",
    Data = "Hello from my Process!"
})

ao.spawn Example

lua
ao.spawn(ao.env.Module.Id, {
    ["Memory-Limit"] = "500-mb",
    ["Compute-Limit"] = "900000000000000000"
})

ao.env

NOTE: ao.env is important context data that you may need as a developer creating processes.

The ao.env property contains the Process and Module Reference Objects

lua
env = {
    Process = {
        Id = "5WzR7rJCuqCKEq02WUPhTjwnzllLjGu6SA7qhYpcKRs",
        Owner = "_r9LpP4FtClpsGX3TOohubyaeb0IQTZZMcxQ24tTsGo",
        Tags = {...}
    },
    Module = {
        Id = "UAUszdznoUPQvXRbrFuIIH6J0N_LnJ1h4Trej28UgrE",
        Owner = "_r9LpP4FtClpsGX3TOohubyaeb0IQTZZMcxQ24tTsGo",
        Tags = {..}
    }
}

ProcessModuleの両方は、aoデータプロトコルの属性を含んでいます。

まとめ

ネットワーク内のプロセスは、メッセージパッシングを通じて通信し、新しいプロセスを作成することで、共有および永続的なデータの「ホログラフィック状態」に貢献します。開発者は、aosを使用して特定のname、match、およびhandle関数を用いてHandlers.add関数でハンドラを追加することでプロセスを構築できます。コアモジュール内のaoヘルパーライブラリは、このプロセスを支援し、メッセージを送信するためのao.sendや、新しいモジュールを作成するためのao.spawn、そして重要なao.envプロパティを提供します。ao.envには、プロセスとモジュールに関する重要な情報が含まれています。aoデータプロトコルは、これらの要素の構造と属性を定義しています。